#pragma once
#include <exception>
#include "object_manager.h"

namespace shermit {
namespace lbvh {
	template<class BVSOA_t>
	class LBVH {
	public:
		LBVH() {}
		~LBVH() {};

		template<class BuildManager_t>
		void init(const BuildManager_t& object_manager) {
			throw "LBVH init error: using unimplemented base function.";
		}

		virtual void free() = 0;

		template<class QueryManager_t>
		void testIntersection(const QueryManager_t& object_manager) {
			throw "LBVH testIntersection error: using unimplemented base function.";
		}

		template<class QueryManager_t>
		void testIntraIntersection(const QueryManager_t& object_manager) {
			throw "LBVH testIntersection error: using unimplemented base function.";
		}
	};
}
}